/**
 * app版本更新配置文件，android应用内更新，ios跳转Appstore商店，插件内处理跳转
 * 此文件会被插件 make_friends/uni_modules/zhouWei-APPUpdate/js_sdk/appUpdate.js 引用
 * 文档：https://ext.dcloud.net.cn/plugin?id=1643
 */
import {
	appVersion
} from "@/api/common.js"
const platform = uni.getSystemInfoSync().platform;
import {
	isEmpty
} from "@/util/helper.js"

export default {
	// 发起ajax请求获取服务端版本号
	getServerNo: (version, isPrompt = false, callback) => {
		let httpData = {
			version: version.versionCode,
			// 版本名称
			versionName: version.versionName,
			// setupPage参数说明（判断用户是不是从设置页面点击的更新，如果是设置页面点击的更新，就不要用静默更新了，不然用户点击没反应很奇怪的）
			setupPage: isPrompt
		};

		// 给/server/requst.js提供版本信息
		getApp().globalData["version"] = version.versionCode;
		getApp().globalData["versionName"] = version.versionName;

		// type：平台（1101是安卓，1102是IOS）
		if (platform == "android") {
			httpData.type = 1101;
		} else {
			httpData.type = 1102;
		}

		const synSetting = (status) => {
			getApp().globalData.is_audit_mode = status;
			console.log('广播给已经加载过的页面--', status)
			// 广播给已经加载过的页面
			uni.$emit("appVersionCallback", status);
		}

		/* res的数据说明
		 * | 参数名称        | 一定返回     | 类型        | 描述
		 * | -------------|--------- | --------- | ------------- |
		 * | versionCode     | y        | int       | 版本号101        |
		 * | versionName     | y        | String    | 版本名称1.0.1      |
		 * | versionInfo     | y        | String    | 版本信息      |
		 * | updateType      | y        | String    | forcibly = 强制更新, solicit = 弹窗确认更新, silent = 静默更新 |
		 * | downloadUrl     | y        | String    | 版本下载链接（IOS安装包更新请放跳转store应用商店链接,安卓apk和wgt文件放文件下载链接）  |
		 */
		console.log("[当前版本号]", JSON.stringify(httpData))
		getApp().globalData.appVersion = httpData
		appVersion({
			os: platform == "android" ? "android" : "ios"
		}).then(res => {
			console.log("接口版本返回---", res)

			let api_result = res.data
			if (isEmpty(api_result) || isEmpty(api_result.downloadUrl)) {

				// true 在出现无新版本的情况下，有弹窗提示
				// false 无提示（一般在APP.vue使用）
				isPrompt && uni.showToast({
					title: "当前已是最新版本",
					icon: "none"
				});

				synSetting(false);
				return
			}

			// 是否shenhe模式
			if (api_result.is_audit_mode && api_result.is_audit_mode == 1 && api_result.versionCode ==
				httpData.version) {
				synSetting(true);
				return
			} else {
				synSetting(false);
			}

			// 当前客户端版本小于等于发布的新版本才更新
			if (parseFloat(httpData.version) <= api_result.versionCode) {

				getApp().globalData.appNewVersionTip = "有新版本";

				// 兼容之前的版本（updateType是新版才有的参数）
				if (api_result.updateType) {
					callback && callback(api_result);
				} else {
					if (api_result.forceUpdate) {
						api_result.updateType = "forcibly";
					} else {
						api_result.updateType = "solicit";
					}
					callback && callback(api_result);
				}
				uni.$emit("needVersionUpdate")
			} else {
				console.log("客户端版本高于发布的新版本，不更新")
			}
		})
	},
	// 弹窗主颜色（不填默认粉色）
	appUpdateColor: "f00",
	// 弹窗图标（不填显示默认图标，链接配置示例如： '/static/demo/ic_attention.png'）
	appUpdateIcon: ''
}